/*
 * Compra.java
 *
 * Created on October 12, 2007, 10:45 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package petstore.model;

import petstore.model.enumeration.ModoPagamento;
import java.util.Collection;
import java.util.Date;
import javax.persistence.AttributeOverride;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Entity class Compra
 * 
 * @author Tom Hayden
 */
@Entity
@Table(name = "compra")
@AttributeOverride(name="id", column=@Column(name="cdcompra"))
public class Compra extends BusinessObject {

    @Column(name = "dtcompra")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataCompra;

    @Column(name = "vlrtotcompra")
    private Double valorTotal;

    @Column(name = "vlrbaseicmscompra")
    private Double valorBaseIcms;

    @Column(name = "vlricmscompra")
    private Double valorIcms;

    @Column(name = "nrfaturacompra")
    private Integer numeroFatura;

    @Column(name = "vlrdescompra")
    private Double valorDesconto;

    @Column(name = "txobservacao")
    private String observacao;

    @Column(name = "modopgto")
    @Enumerated(EnumType.ORDINAL)
    private ModoPagamento modoPagamento;

    @Column(name = "ativo")
    private boolean active;

    @OneToMany(cascade = CascadeType.ALL)
    private Collection<ItemCompra> itensCompra;

    @ManyToOne
    @JoinColumn(name="cdnatoperacao")
    private NaturezaOperacao naturezaOperacao;
    
    @ManyToOne
    @JoinColumn(name="cdfornecedor")
    private Fornecedor fornecedor;

    @ManyToOne
    @JoinColumn(name="cdfuncionario")
    private Funcionario funcionario;

    /** Creates a new instance of Compra */
    public Compra() {
    }

    public Double getValorTotal() {
        return valorTotal;
    }

    public void setValorTotal(Double valorTotal) {
        this.valorTotal = valorTotal;
    }

    public Date getDataCompra() {
        return dataCompra;
    }

    public void setDataCompra(Date dataCompra) {
        this.dataCompra = dataCompra;
    }

    public Double getValorBaseIcms() {
        return valorBaseIcms;
    }

    public void setValorBaseIcms(Double valorBaseIcms) {
        this.valorBaseIcms = valorBaseIcms;
    }

    public Double getValorIcms() {
        return valorIcms;
    }

    public void setValorIcms(Double valorIcms) {
        this.valorIcms = valorIcms;
    }

    public Integer getNumeroFatura() {
        return numeroFatura;
    }

    public void setNumeroFatura(Integer numeroFatura) {
        this.numeroFatura = numeroFatura;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public Double getValorDesconto() {
        return valorDesconto;
    }

    public void setValorDesconto(Double valorDesconto) {
        this.valorDesconto = valorDesconto;
    }

    public ModoPagamento getModoPagamento() {
        return modoPagamento;
    }

    public void setModoPagamento(ModoPagamento modoPagamento) {
        this.modoPagamento = modoPagamento;
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    public Collection<ItemCompra> getItensCompra() {
        return itensCompra;
    }

    public void setItensCompra(Collection<ItemCompra> itensCompra) {
        this.itensCompra = itensCompra;
    }

    public NaturezaOperacao getNaturezaOperacao() {
        return naturezaOperacao;
    }

    public void setNaturezaOperacao(NaturezaOperacao naturezaOperacao) {
        this.naturezaOperacao = naturezaOperacao;
    }

    public Fornecedor getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

}
